package br.com.mensageiro.negocio.entidade;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * The persistent class for the mensagem database table.
 * 
 */
@Entity
public class Mensagem implements Serializable, Entidade {
	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	private Long id;

	private String assunto;

	private String mensagem;

	private Long idpai;

	@Temporal(TemporalType.DATE)
	private Date dtinclusao;

	// bi-directional many-to-one association to Arquivo
	@OneToMany(mappedBy = "mensagem", cascade = CascadeType.ALL)
	private List<Arquivo> arquivos;

	// bi-directional many-to-one association to LogMensagem
	@OneToMany(mappedBy = "mensagem", cascade = CascadeType.ALL)
	private List<LogMensagem> logMensagems;

	// bi-directional many-to-one association to Usuario
	@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
	@JoinColumn(name = "id_emitente")
	private Usuario usuario;

	// bi-directional many-to-one association to MensagemDestinatario
	@OneToMany(mappedBy = "mensagem", cascade = CascadeType.ALL)
	private List<MensagemDestinatario> mensagemDestinatarios;

	public Mensagem() {
	}

	public Long getId() {
		return this.id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getAssunto() {
		return this.assunto;
	}

	public void setAssunto(String assunto) {
		this.assunto = assunto;
	}

	public Date getDtinclusao() {
		return this.dtinclusao;
	}

	public void setDtinclusao(Date dtinclusao) {
		this.dtinclusao = dtinclusao;
	}

	public String getMensagem() {
		return this.mensagem;
	}

	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}

	public List<Arquivo> getArquivos() {
		return this.arquivos;
	}

	public void setArquivos(List<Arquivo> arquivos) {
		this.arquivos = arquivos;
	}

	public List<LogMensagem> getLogMensagems() {
		return this.logMensagems;
	}

	public void setLogMensagems(List<LogMensagem> logMensagems) {
		this.logMensagems = logMensagems;
	}

	public Usuario getUsuario() {
		return this.usuario;
	}

	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}

	public List<MensagemDestinatario> getMensagemDestinatarios() {
		return this.mensagemDestinatarios;
	}

	public void setMensagemDestinatarios(List<MensagemDestinatario> mensagemDestinatarios) {
		this.mensagemDestinatarios = mensagemDestinatarios;
	}

	public void setIdpai(Long idpai) {
		this.idpai = idpai;
	}

	public Long getIdpai() {
		return idpai;
	}

	@Override
	public Serializable getIdEntidade() {
		// TODO Auto-generated method stub
		return null;
	}

}